import { View, Text, RichText } from "@tarojs/components";
import Taro, { useLoad ,usePageScroll} from "@tarojs/taro";
import "./index.scss";
import { useState } from "react";
import { whRequest } from "@/utils/request";


export default function AgreeAgreement() {
  const [curCont, setCurCont] = useState<any>([]);
  const [canClick, setCanClick] = useState(false);
  const [btnTxt, setBtnTxt] = useState("同意");
  const [_windowHeight, _setWindowHeight] = useState(0);
  const [contentList, setContentList] = useState<any[]>([
    {
      name:'积分兑换协议',
      content:[
        {
            "type": "content",
            "content": "本《积分兑换协议》（以下简称“本协议”）是您（以下或称“用户”）与北京万户良方科技有限公司（“积分宝”平台的运营方，以下简称“平台运营方”或“我们”）之间，就使用“积分宝”平台（以下简称“本平台”）提供的积分兑换服务所订立的具有法律约束力的协议。"
        },
        {
            "type": "strongContent",
            "content": "特别提示： 在您开始使用本平台服务前，请您务必仔细阅读并充分理解本协议的全部内容，特别是其中免除或者限制责任的条款、费用条款、法律适用和争议解决条款等。这些条款可能以加粗形式提示您注意。"
        },
        {
            "type": "content",
            "content": "当您通过网络页面点击“同意”、“确认”或实际使用本平台服务时，即表示您已完全理解并接受本协议的所有条款，并同意受其约束。如您不同意本协议的任何内容，请立即停止使用本平台服务。"
        },
        {
            "type": "title",
            "content": "第一条 定义"
        },
        {
            "type": "content",
            "content": "1.1 积分宝平台：指由平台运营方开发并运营，旨在为用户提供将商业消费积分兑换为“医保代缴金”的数字化公益服务平台。"
        },
        {
            "type": "content",
            "content": "1.2 爱心企业：指与本平台建立合作关系，允许其用户通过本平台将其合法拥有的消费积分进行兑换的企业。"
        },
        {
            "type": "content",
            "content": "1.3 医保代缴金：指用户通过本平台将其在爱心企业的积分，按照约定规则兑换后，可专项用于缴纳国家城乡居民基本医疗保险费用的资金。"
        },
        {
            "type": "content",
            "content": "1.4 公益基金会：指北京爱尔公益基金会，作为本项目的公益统筹与资金管理方，负责接收并管理用户兑换后的资金，并最终向医保部门完成支付。"
        },
        {
            "type": "title",
            "content": "第二条 服务内容与授权"
        },
        {
            "type": "content",
            "content": "2.1 本平台提供的核心服务是：为您搭建一个桥梁，将您在不同爱心企业中合法拥有但处于散碎、闲置状态的消费积分，集合并转化为可用于缴纳您本人、您家人或您指定捐赠对象的基本医疗保险费用的医保代缴金。"
        },
        {
            "type": "content",
            "content": "2.2 您确认并同意，当您在本平台选择某家爱心企业并申请积分兑换时，您即不可撤销地授权："
        },
        {
            "type": "content",
            "content": "(a) 平台运营方向该爱心企业传递您的兑换申请指令，包括您的账户信息及申请兑换的积分数量。"
        },
        {
            "type": "content",
            "content": "(b) 对应的爱心企业根据其公示的兑换规则，从您的积分账户中扣减相应数量的积分。"
        },
        {
            "type": "content",
            "content": "(c) 对应的爱心企业在完成积分扣减后，将该部分积分对应的资金价值，按照本协议第五条约定的结算方式，支付至公益基金会及平台运营方的指定账户。"
        },
        {
            "type": "title",
            "content": "第三条 用户的权利与义务"
        },
        {
            "type": "content",
            "content": "3.1 您承诺并保证您用于兑换的积分是您通过合法途径获得且有权处分的财产。因积分来源不合法或权属不清所引发的一切责任，由您自行承担。"
        },
        {
            "type": "content",
            "content": "3.2 您有权了解并确认各爱心企业在本平台公示的积分兑换规则，包括但不限于兑换比例、单人兑换额度上限、总兑换人数上限等。您一旦提交兑换申请，即视为您已接受该等规则。"
        },
        {
            "type": "content",
            "content": "3.3 您理解并同意，积分一经成功兑换，即刻生效，兑换过程不可逆，已扣减的积分及已转换的资金将无法退还。"
        },
        {
            "type": "content",
            "content": "3.4 您应妥善保管您的平台账户信息及密码，并对您账户下发生的所有活动负法律责任。"
        },
        {
            "type": "content",
            "content": "3.5 您有权查询您的积分兑换记录、医保代缴金余额及使用明细。"
        },
        {
            "type": "title",
            "content": "第四条 平台运营方的权利与义务"
        },
        {
            "type": "content",
            "content": "4.1 平台运营方负责本平台的技术开发、系统维护、运营管理及客户服务，保障平台的正常、安全运行。"
        },
        {
            "type": "content",
            "content": "4.2 平台运营方有权根据业务发展需要，在提前公示的情况下，调整服务内容或修改本协议条款。如您在条款变更后继续使用本服务，视为您已接受修改后的协议。"
        },
        {
            "type": "content",
            "content": "4.3 平台运营方负责汇总用户的兑换申请，并准确无误地向爱心企业及公益基金会提交相关数据。"
        },
        {
            "type": "content",
            "content": "4.4 若因平台自身技术故障导致积分兑换异常，平台运营方将负责修复并承担因此给用户造成的直接损失。"
        },
        {
            "type": "title",
            "content": "第五条 服务费用与资金管理"
        },
        {
            "type": "content",
            "content": "5.1 本着公益原则，本平台服务对合作的爱心企业免费。为保障项目的可持续运营并覆盖技术研发、平台维护、客户服务及AI健康管理等增值服务成本，本平台将向您（用户）收取一定比例的服务费。"
        },
        {
            "type": "content",
            "content": "5.2 费用标准如下，该标准将在您发起兑换申请时于平台页面显著位置明示，您需确认知情并同意后方可继续操作："
        },
        {
            "type": "content",
            "content": "(a) 平台运营服务费：平台运营方将收取您本次兑换积分所对应资金价值金额的 8%，作为技术服务、平台运营及AI健康管理等增值服务的费用。"
        },
        {
            "type": "content",
            "content": "(b) 公益管理费：作为项目资金管理方，公益基金会将收取您本次兑换积分所对应资金价值金额的 6.44%（此比例为兑换总额扣除8%平台运营服务费后剩余部分的7%），用于专项基金管理及公益项目统筹。"
        },
        {
            "type": "content",
            "content": "5.3 费用示例：若您兑换的积分价值相当于100元人民币，则："
        },
        {
            "type": "content",
            "content": "* 平台运营方收取服务费：100元 * 8% = 8元。"
        },
        {
            "type": "content",
            "content": "* 公益基金会收取管理费：100元 * 6.44% = 6.44元。"
        },
        {
            "type": "content",
            "content": "* 您最终可用于缴纳医保的金额为：100元 - 8元 - 6.44元 = 85.56元。"
        },
        {
            "type": "content",
            "content": "5.4 资金管理：您授权兑换的资金，将由爱心企业直接结算至公益基金会指定的专项管理账户，并由公益基金会进行统一管理和代缴操作，确保资金专款专用。平台运营方不直接接触或沉淀该部分代缴资金。若因公益基金会的资金管理问题导致医保代缴延误，由公益基金会承担全部责任。"
        },
        {
            "type": "title",
            "content": "第六条 个人信息保护与数据管理"
        },
        {
            "type": "content",
            "content": "6.1 平台运营方严格遵守《中华人民共和国个人信息保护法》等相关法律法规，采取严格措施保护您的个人信息安全。"
        },
        {
            "type": "content",
            "content": "6.2 为实现本协议项下之服务，您同意并授权平台运营方收集、存储、使用和共享您的必要个人信息（如手机号、身份信息、积分账户信息等），并仅在为实现代缴医保之目的时与合作的爱心企业、公益基金会及政府医保部门共享。"
        },
        {
            "type": "title",
            "content": "第七条 免责与责任限制"
        },
        {
            "type": "content",
            "content": "7.1 本平台仅提供信息技术服务，不对各爱心企业自身的积分政策、兑换规则的合法性、真实性及有效性作任何明示或暗示的保证。"
        },
        {
            "type": "content",
            "content": "7.2 因您自身原因（如提供信息错误）、第三方原因（如银行系统故障、医保系统延迟）或不可抗力（如自然灾害、政府行为、黑客攻击）导致的服务中断或损失，平台运营方在法律允许的范围内不承担责任。"
        },
        {
            "type": "content",
            "content": "7.3 您理解并同意，各爱心企业作为独立的商业主体，有权根据其自身经营策略随时调整积分兑换规则（包括但不限于兑换比例、额度等）或提前终止本次积分兑换活动。该等调整或终止将由爱心企业通过其官方渠道或在本平台进行公示。因爱心企业单方面调整或终止活动给您造成的任何影响或损失，应由您与该爱心企业协商解决，平台运营方对此不承担任何责任。"
        },
        {
            "type": "title",
            "content": "第八条 法律适用与争议解决"
        },
        {
            "type": "content",
            "content": "8.1 本协议的订立、效力、解释、履行及争议解决均适用中华人民共和国大陆地区法律。"
        },
        {
            "type": "content",
            "content": "8.2 因本协议引起的或与本协议有关的任何争议，双方应首先友好协商解决；协商不成的，任何一方均有权向平台运营方（北京万户良方科技有限公司）住所地有管辖权的人民法院提起诉讼。"
        },
        {
            "type": "title",
            "content": "第九条 其他"
        },
        {
            "type": "content",
            "content": "9.1 本协议自您点击确认同意之时起生效。"
        },
        {
            "type": "content",
            "content": "9.2 中国市长协会为本项目支持单位，仅协助项目推广，不承担本协议项下的任何法律责任。"
        },
        {
            "type": "content",
            "content": "9.3 本协议内容如有任何疑问，您可通过本平台公布的联系方式进行咨询。"
        }
      ]
    }
  ]);
  const [contHeight,setContHeight] = useState(0)
  const [curIndex, setCurIndex] = useState(0);

  function initCurData() {
    setCurCont(contentList[0].content);
    Taro.setNavigationBarTitle({
      title: contentList[0].name,
    });
    setTimeout(() => [getContentHeight()], 200);
  }
  function getContentHeight(){
    let query = Taro.createSelectorQuery()
    query
      .select('#cont')
      .boundingClientRect(function (rect:any) {
        
        // 多减去50,这样pagescroll 判断是不是到底部的时候，不用每次都减了
        setContHeight(rect.height - 50)
        
        console.log('getContentHeight rect:',rect)
        const res = Taro.getWindowInfo();
        
        console.log('getWindowInfo res:',res)
        if(rect.height - 50 <= res.windowHeight){
          setCanClick(true)
          setBtnTxt('同意')
        }else{
          setCanClick(false)
          setBtnTxt('请向上滑动阅读到底部')
        }
      })
      .exec()
  }
  

  function getNextAgreement() {
    if (!canClick) {
      return
    }
    // console.log('curIndex:', curIndex)
    // console.log('curIndex:',curIndex)
    if (curIndex < contentList.length - 1) {
      Taro.pageScrollTo({
        scrollTop: 0
      })
      setTimeout(() => {
        setCurIndex(curIndex + 1)
        setCurCont(contentList[curIndex + 1].content)
        setCanClick(false) 
        Taro.setNavigationBarTitle({
          title: contentList[curIndex + 1].name
        })
        getContentHeight()
      }, 200)
    } else {
      // console.log('back')
      Taro.setStorageSync(
        'pages/jiFenAgreement/index/agreeInsuranceAgreement',
        true
      )
      // wx.redirectTo({
      //   url: '/pagesIns/insurance/index'
      // });
      Taro.navigateBack({
        delta: 1
      })
    }
  }

  
  useLoad(() => {
      // 获取当前window高度
    const res = Taro.getWindowInfo();
    console.log('res:',res)
    _setWindowHeight(res.windowHeight);
    initCurData()
  });

  // function judgeIsBottom() {
  //   Taro.createSelectorQuery().select('#mainPage').boundingClientRect(function (rect) {
  //     if (e.scrollTop >= rect.height - 555) {
  //         //已离底部一段距离，下面处理操作
  //     }
  //     if(contHeight)
  // }).exec()
  // }

  usePageScroll((res) => {
    
    if (res.scrollTop + _windowHeight > contHeight) {
      // console.log('滚动到底部了')
      setCanClick(true)
      setBtnTxt('同意')
    }

  })
  return (
    <View className="agreement" id="mainPage">
      <View id='cont' className='cont'>
        
          {
          curCont && curCont.map((item, index) => {
            return <View className={['txt', item.type === 'title' ? 'title' : 'content', item.type === 'strongContent' ? 'strongContent' : ''].join(' ')}>{item.content}</View>
          })
          }
        
      </View>
      <view
        className={["main-bottom-btn", canClick ? "" : "disabled"].join(" ")}
        onClick={getNextAgreement}
      >
        <view className="main-bottom-inner">{btnTxt}</view>
      </view>
    </View>
  );
}
